#include <iostream>
#include <string>
#include <vector>
#include <functional>

void print(const std::string str, int num)
{
    std::cout << str << num << std::endl;
}

int main()
{
    using Task = std::function<void(const std::string &)>;
    std::vector<Task> arry;
    // bind函数绑定类的成员函数需要指明类域，并取函数地址
    // std::placeholders::_1为占位符，在被绑定函数参数的对应位置表示该参数需要传参（未绑定），
    // 非占位符的变量表示该变量直接绑定到函数对应参数位置，无需传参
    arry.push_back(std::bind(print, std::placeholders::_1, 10));
    // arry.push_back(std::bind(print, "leihou", 20));
    // arry.push_back(std::bind(print, "nihao", 30));
    // arry.push_back(std::bind(print, "bitejiuyeke", 40));

    for (auto &f : arry)
    {
        f("dawdad");
    }
    return 0;
}